Enterprise computing systems typically include one or more host systems for processing customer data and running application programs, direct access storage devices (DASDs) for storing the data, and one or more storage controllers for directing the storage and retrieval of data between the host(s) and the DASDs. In addition to the customer data, the storage controller typically maintains metadata which provides information about tracks or blocks of data in the DASD or in cache storage in the storage controller. The storage controller processes the metadata during certain operations on the customer data represented by the metadata to improve the speed and efficiency with which requested operations are performed. During DASD initialization, metadata is staged from disk to a cache storage (a volatile type of storage). A power failure or certain other types of errors may cause the contents of the cache to be lost.
Certain storage controllers, such as the IBM™ Enterprise Storage Server™ (ESS) controller, may be configured with copy services functionality, including (but not limited to) flash copy, peer-to-peer remote copy, extended remote copy, and concurrent copy which assist in backing up data and recovering from disasters. During a copy service (CS) operation, multi-field CS metadata is generated and maintained by the storage controller. The CS metadata includes information about the state of a copy services operation at any point in time, such as internal settings, source and destination addresses, and other data about the state of data being copied. Consequently, if a controller loses power or encounters some other interrupting event, the controller may be restarted, the metadata read, the CS operation restored to the point of interruption and then resumed and completed.
In an earlier version of the IBM ESS controller, the CS metadata was maintained in a 26 KB in-memory structure that was updated directly by the clients. During an update, the entire structure was written to disk, even if only a few fields were update, and no record was kept of which fields of the metadata were changed. In a subsequent version, the 26 KB structure of CS control data was mapped to seven 8 KB metadata tracks. During an update, only a metadata track containing an updated field was written to the disk.
Journaling has been implemented to allow storing updates in non-volatile storage (NVS), improving update performance and maintaining the metadata in the event of a power loss or other significant event. Each metadata track has a corresponding page in NVS which includes a chain of blocks containing a sequence of journal entries identifying an operation being performed and the data in cache being modified. During a recovery operation, the metadata may be staged from disk to cache and the changes previously recorded in the journal entries applied, thereby restoring the metadata to have the most current version of data. Because some CS functions store control data to multiple metadata tracks, an update to the tracks should be performed to all of them (“atomically”) in a proper sequence with safeguards to protect against metadata corruption if a failure occurs before all of the tracks have been updated.
Consequently, it remains desirable for more efficient management of atomic updates of multiple global metadata tracks.